<?php
class MonitoreosController extends AppController 
{
    var $name = 'Monitoreos';
    var $layout =  "ajax";
    var $components = array('Interfaz','Vista');
    var $helpers = array('Interfaz','Vista','Ayuda');
    var $uses = array('Monitoreo', 'Beneficiario', 'Integrador');
	
    public function beforeFilter(){
            $this->validar();
    }

    public function buscarIntegrador($codigo = null) {
        $sql = "SELECT codclisap, rifcli, nomcli, staclidel 
                FROM interfaces.int_archivo_clientes
                WHERE 1=1 ";
        $sql .= ( !empty($codigo) ) ? "AND codclisap IN ($codigo) " : "";
        $sql .= "AND idarchcli IN (SELECT idarchcli 
                FROM (SELECT codclisap, MAX(idarchcli) AS idarchcli
                FROM interfaces.int_archivo_clientes
                WHERE 1=1 ";
        $sql .= ( !empty($codigo) ) ? " AND codclisap IN ($codigo) " : "";
        $sql .= "GROUP BY codclisap) t1 )";

        return $this->Integrador->query($sql);
    }
        
    public function buscarMonitoreos($codigo = null) {
        if (empty($codigo))
            $condiciones['Beneficiario.id >'] = 0;
        else
            $condiciones['Beneficiario.codigo_sap'] = $codigo;

        $listado = $this->Beneficiario->find('all', array('conditions' => $condiciones));
        $data = array();
        $codigoSAP = array();

        foreach($listado AS $dato) {
            $codigoSAP[] = $dato['Beneficiario']['codigo_sap'];
        }

        $codigo = (!isset($codigo)) ? implode(',', $codigoSAP): $codigo;
        
        $integrador = array();

        try {
            $integrador = $this->buscarIntegrador($codigo);
        } catch (Exception $e) {
            $data = array('error'=>$e->getCode());
        }
        
        foreach($integrador AS $int_clave => $int_valor) {
            foreach($listado AS $bene_clave => $bene_valor) {
                if ($int_valor[0]['codclisap']==$bene_valor['Beneficiario']['codigo_sap']) {
                    $data[$bene_clave] = $bene_valor;
                    $data[$bene_clave]['Integrador'] = $int_valor;
                    break;
                }
            }
        }
        sort($data);
        return $data;
    }
  	
    public function index($busq = null){
        $this->permisos_menu_individual('MONITOREO DE CLIENTES');
        $this->Vista->title('Listado de Clientes Monitoreados');
        $data = $this->buscarMonitoreos();
        $this->set('data', $data);
    }

    public function nuevo(){
        $this->permisos_accion_individual('MONITOREO DE CLIENTES','NUEVO');
    }

    public function comprobar_cliente($cliente) {
        if (!$this->Vista->empyt(array($cliente), array())) {
            if(strlen($cliente)==10){
                $existe = $this->Beneficiario->find('first', array('conditions' => array('codigo_sap' => $cliente)));
                if (empty($existe)) {
                    $obj = $this->buscarIntegrador($cliente);
                    if(!empty($obj)){
                        $this->set('data',$obj);
                    }else{
                        $this->Vista->mensaje("Cliente no existe!", 'ERROR');
                    }
                } else {
                    $this->Vista->mensaje("El Cliente ya esta en monitoreo", 'AVISO');
                }
            }
        }
    }

    public function guardar(){
        $data = $this->request->data;

        if (!$this->Vista->empyt($data, array())) {
            
            $ds = $this->Beneficiario->getDataSource();
            $ds->begin();
            if ($data['beneficiario_id'])
                $monitoreo['Beneficiario']['id'] = $data['beneficiario_id'];

            $monitoreo['Beneficiario']['codigo_sap'] = $data['cod_sap'];
            $monitoreo['Beneficiario']['ced_rif'] = $data['ced_rif'];

            if( !empty( $data['desde']) && !empty($data['hasta']) && $data['monto'] > 0 ){
                $desde = strtotime($data['desde']);
                $hasta = strtotime($data['hasta']);
                
                if ($desde <= $hasta) {
                    if ( $this->Beneficiario->save($monitoreo) ) {
                        if (!empty($data['monitoreo_id']))
                            $monitoreo['Monitoreo']['id'] = $data['monitoreo_id'];
                                
                        $monitoreo['Monitoreo']['beneficiario_id'] = $this->Beneficiario->id;                        
                        $monitoreo['Monitoreo']['desde'] = date("Y-m-d", strtotime($data['desde']));
                        $monitoreo['Monitoreo']['hasta'] = date("Y-m-d", strtotime($data['hasta']));
                        $monitoreo['Monitoreo']['monto'] = str_replace(',', '.', $data['monto']);
                        
                            if($this->Monitoreo->save($monitoreo)){
                                $ds->commit();
                                $this->Vista->cerrar_ventana($data['id_vent']);
                                $this->Vista->mensaje('Se ha guardado exitosamente!');
                            } else {
                                $ds->rollback();
                                $this->Vista->mensaje("Ocurrio un error Guardando", 'ERROR', 'codigo');
                            }
                    } else {
                        $ds->rollback();
                        $this->Vista->mensaje("Ocurrio un error Guardando", 'ERROR', 'codigo');
                    }
                } else {
                    $ds->rollback();
                    $this->Vista->mensaje("La fecha desde es mayor que la fecha hasta", 'ERROR');
                }
            } else {
                if( $data['monto'] <= 0 ) {
                    $this->Vista->mensaje("El monto no puede ser igual o menor a 0", 'ERROR');
                } else {
                    $this->Vista->mensaje("Faltan campos requeridos", 'ERROR');
                }
            }
        } else {
            $this->Vista->mensaje("Faltan campos requeridos", 'ERROR');
        }
        $this->index();
        $this->render('index');
            
    }
    
    public function ver($datos = null){
        $this->permisos_opcion_individual('MONITOREO DE CLIENTES','ESTATUS','VER');
        $codigo = $this->Interfaz->id($datos);
        $data = $this->buscarMonitoreos($codigo);
        $this->set('data', $data);
    }

    public function editar($id = null){
        $this->permisos_opcion_individual('MONITOREO DE CLIENTES','ESTATUS','MODIFICAR');
        $codigo = $this->Interfaz->id($id);
        $data = $this->buscarMonitoreos($codigo);
        $this->set('data', $data);
    }
    
    public function bloquear($id = null){
        $this->permisos_opcion_individual('MONITOREO DE CLIENTES','ESTATUS','SUPERVISION');
        $codigo = $this->Interfaz->id($id);
        $data = $this->Beneficiario->find('first', array('conditions' => array('codigo_sap' => trim($codigo))));

        if ( !empty($data) ) {
            $monitoreo_id = $data['Monitoreo'][0]['id'];
            $estatus = $data['Monitoreo'][0]['estatus'];
            unset($data);
            $data['Monitoreo']['id'] = $monitoreo_id;
            $data['Monitoreo']['estatus'] = ($estatus==1) ? 0: 1;
            $this->Monitoreo->save($data);
        }
        $this->index();
        $this->render('index');
    }

}